home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / demos / 108 / modula / convertt.mod < prev    next >
Encoding:
Text File  |  1987-02-20  |  2.8 KB  |  139 lines

  1. MODULE ConvertToCode;
  2. FROM Strings IMPORT Concat,String,Pos;
  3. FROM IO IMPORT FILE,OpenIn,OpenOut,WriteCard,Close,WriteString,NewLines,
  4.                WriteChar;
  5. FROM Streams IMPORT Read16Bit,Read32Bit;
  6. FROM AESForms IMPORT FileSelectorInput;
  7. FROM SYSTEM IMPORT ADR;
  8. FROM GEMDOS IMPORT Delete,GetPath;
  9.  
  10. PROCEDURE GetSize(       f:FILE;
  11.                   VAR size:LONGCARD);
  12.  
  13. VAR   dummy:CARDINAL;
  14.  
  15. BEGIN
  16.     Read16Bit(f,dummy);
  17.     Read32Bit(f,size);
  18. END GetSize;
  19.  
  20.  
  21. PROCEDURE GetInputName(VAR name:String);
  22.  
  23.  
  24.  
  25. VAR fname:ARRAY[0..11] OF CHAR;
  26.     pname:ARRAY[0..68] OF CHAR;
  27.    button:INTEGER;
  28.       end:CARDINAL;
  29.     drive:CARDINAL;
  30.        ok:BOOLEAN;
  31.  
  32. BEGIN
  33.  
  34.     fname[0]:=0C;
  35.     GetPath(pname,drive);
  36.     pname[0]:=CHAR(drive+ORD("A"));
  37.     pname[1]:=":";
  38.     pname[2]:="\";
  39.     pname[3]:="*";
  40.     pname[4]:=".";
  41.     pname[5]:="O";
  42.     pname[6]:=0C;  
  43.     FileSelectorInput(ADR(pname),ADR(fname),button);
  44.     ok:=Pos(pname,"*.",0,end);
  45.     pname[end]:=0C;
  46.     Concat(pname,fname,name);
  47.  
  48. END GetInputName;
  49.  
  50.  
  51. PROCEDURE GetOutputName(VAR name:String);
  52.  
  53.  
  54.  
  55. VAR fname:ARRAY[0..11] OF CHAR;
  56.     pname:ARRAY[0..68] OF CHAR;
  57.    button:INTEGER;
  58.       end:CARDINAL;
  59.     drive:CARDINAL;
  60.        ok:BOOLEAN;
  61.  
  62. BEGIN
  63.  
  64.     fname[0]:=0C;
  65.     GetPath(pname,drive);
  66.     pname[0]:=CHAR(drive+ORD("A"));
  67.     pname[1]:=":";
  68.     pname[2]:="\";
  69.     pname[3]:="*";
  70.     pname[4]:=".";
  71.     pname[5]:="C";
  72.     pname[6]:="O";
  73.     pname[7]:="D";
  74.     pname[8]:=0C;  
  75.     FileSelectorInput(ADR(pname),ADR(fname),button);
  76.     ok:=Pos(pname,"*.",0,end);
  77.     pname[end]:=0C;
  78.     Concat(pname,fname,name);
  79.  
  80. END GetOutputName;
  81.  
  82.  
  83.  
  84.  
  85.  
  86. VAR    i:LONGCARD;
  87.       in:FILE;
  88.      out:FILE;
  89.        s:LONGCARD;
  90.    instr:CARDINAL;
  91.        c:CHAR;
  92.        l:CARDINAL;
  93.       ok:BOOLEAN;
  94.    inspec:String;
  95.   outspec:String;
  96.  
  97.  
  98. BEGIN
  99.  
  100.     GetInputName(inspec);
  101.     GetOutputName(outspec);
  102.     ok:=Delete(outspec);
  103.     OpenIn(in,inspec);
  104.     GetSize(in,s);
  105.     Close(in);
  106.     OpenOut(out,outspec);
  107.     OpenIn(in,inspec);
  108.     FOR i:=1 TO 14 DO
  109.         Read16Bit(in,instr);
  110.     END;
  111.     WriteString(out,"MODULE CODEMODULE;");
  112.     NewLines(out,1);
  113.     WriteString(out,"FROM SYSTEM IMPORT CODE;");
  114.     NewLines(out,1);
  115.     WriteString(out,"BEGIN");
  116.     NewLines(out,1);
  117.     WriteString(out,"    CODE(");
  118.     l:=0;
  119.     FOR i:=1 TO s DIV 2 DO
  120.         IF (l=8) THEN
  121.             WriteString(out,");");
  122.             NewLines(out,1);
  123.             WriteString(out,"    CODE(");
  124.             l:=0;
  125.          END;
  126.          IF (l#0) THEN
  127.             WriteChar(out,",");
  128.          END;
  129.          INC(l);
  130.          Read16Bit(in,instr);
  131.          WriteCard(out,instr,0);
  132.     END;
  133.     WriteString(out,");");
  134.     NewLines(out,1);
  135.     WriteString(out,"END CODEMODULE.");
  136.     NewLines(out,2);
  137.  
  138. END ConvertToCode.
  139.